//
//  MainViewController.m
//  UI09_1_UITableView表视图
//
//  Created by Scott on 15/4/29.
//  Copyright (c) 2015年 www.lanou3g.com 蓝欧3G. All rights reserved.
//

#import "MainViewController.h"

@interface MainViewController () <UITableViewDataSource>

/* 声明一个数组的属性, 有来存放数据 */
@property (nonatomic, retain) NSMutableArray *arr;

@end

@implementation MainViewController

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.arr = [NSMutableArray arrayWithObjects:@"北京", @"天津", @"河北", @"河南", @"山东", @"黑龙江", @"吉林", @"辽宁", nil];
    }
    return self;
    
    
    
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.view.backgroundColor = [UIColor whiteColor];
    self.title = @"表视图";
    
#pragma mark - 知识点1 UITableView
/**
 * @brief UITableView 通常用来管理一组具有相同数据结构的数据
 *
 * UITabelView 继承自 UIScrollView, 所以可以滚动
 * 每一条数据都是显示在UITableViewCell对象中
 * UITableView 可以分区显示的, 每个分区称为一个section, 每一行称为row. 编号从0开始
 */
    
    /** 重要属性
     * style 
     * seperatorStyle
     * seperatorColor
     * rowHeight
     */
    
    /* 创建UITableView */
    UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
    
    [self.view addSubview:tableView];
    [tableView release];
    
    /* 分割线样式 */
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    
    /* 分割线颜色 */
    tableView.separatorColor = [UIColor greenColor];
    
    /* 统一设置行高 */
    tableView.rowHeight = 40; /* 默认为44 */
    
#pragma mark ** DataSource 数据源
    /* 需要给tableView指定一个数据源, 负责给tableView提供数据 
     * 需要实现协议中两个必须实现的方法:
     *
     *  tableView:numberOfRowsInSection:
     *
     *  tableView:cellForRowAtIndexPath:
     */
    /* 1, 签订协议 */
    
    /* 2. 指定代理人 */
    tableView.dataSource = self;
    
    /* 3. 实现协议方法 */
    
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    /* 告诉tableView 每个section要显示多少行 */
    
    /* 根据数组的元素个数确定行数 */
    return [self.arr count];
    
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
#pragma mark - 知识点2 UITableView重用机制
    /* tableView 重用机制 */
    /* 1. 尝试从重用池中获取一个cell */
    
    static NSString *identifier = @"reuse";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    
    /* 2. 判断cell是否存在 */
    if (cell == nil) {
        /* 创建cell */
        
        /**
         * 参数1: cell 样式(系统自带4种样式)
         * 参数2: 重用标示
         */
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier] autorelease];
    }
    
    /* 从数组取值 */
    NSString *name = [self.arr objectAtIndex:indexPath.row];
    
    /* cell 自带一个imageView和两个label */
    
    /* cell 标题 */
    cell.textLabel.text = name;
    
    /* cell 副标题 */
    cell.detailTextLabel.text = @"ssss";
    
    /* cell imageView(设置图片) */
    cell.imageView.image = [UIImage imageNamed:@"1.jpg"];
    cell.imageView.layer.cornerRadius = 20.f;
    cell.imageView.layer.masksToBounds = YES;
    cell.imageView.backgroundColor = [UIColor grayColor];

    
    /* 指定cell选中效果 */
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;
    
    /* cell accessoryType 指定辅助效果样式 */
    switch (indexPath.row) {
        case 0:
            cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
            break;
        case 1:
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
            break;
        case 2:
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            break;
        case 3:
            cell.accessoryType = UITableViewCellAccessoryDetailButton;
            break;
        default:
            break;
    }
    
    
    
    
    return cell;
    
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end
